package ArrayTest.Homework;
/*
编写程序，使用一维数组，模拟栈数据结构。
	要求：
		1、这个栈可以存储java中的任何引用类型的数据。
		2、在栈中提供push方法模拟压栈。（栈满了，要有提示信息。）
		3、在栈中提供pop方法模拟弹栈。（栈空了，也有有提示信息。）
		4、编写测试程序，new栈对象，调用push pop方法来模拟压栈弹栈的动作。
 */
public class ArrayHomeworkTest1 {
    public static void main(String[] args){
        MyStack myStack = new MyStack(new Object[10]);
        for(int i = 0; i < 10; i++){
            myStack.push(new Object());
        }
        for(int j = 0; j < 10; j++){
            myStack.pop();
        }
    }
}
class MyStack{
    Object[] objects;
    int index = 0;
    public MyStack(){

    }
    public MyStack(Object[] objects){
        this.objects = objects;
    }
    public void push(Object obj){
        if(index < this.objects.length){
            objects[this.index] = obj;
            this.index++;
            System.out.println("压栈成功！"+obj);
        }else{
            System.out.println("压栈失败！栈已满");
        }
    }



    public void pop(){
        if(index > 0){
            System.out.println("弹栈成功"+objects[this.index-1]);
            objects[this.index-1] = null;
            this.index--;
        }else{
            System.out.println("弹栈失败！栈已空");
        }
    }
}
